1. 概述
Testcontainers
是一个Java库,用于集成测试中配合Docker容器提供一个轻量级的一次性实例,如MySQL等等,我们则只需要启动Docker,在application.yml
中配置如下信息,即可通过Docker拉取对应的中间件,由此进行解耦,其他的主机则仅需保证Docker服务的正常运行即可
1 | spring: |
2. 一个坑
a. 现象
但是,对于Mac电脑的M1芯片来说,以上配置的MySQL则一直会拉取不到,并在控制台提示Can't get Docker image: RemoteDockerImage(imageName=mysql:8.0.22, imagePullPolicy=DefaultPullPolicy())
,背后的原因是因为M1芯片采用的架构是arm64
,然而MySQL官方提供的Docker镜像则只有amd64
架构的,因此会导致如上报错
b. 解决方案
- Docker命令行
- 只需在拉取命令中新增指定参数
--platform linux/x86_64
即可正常运行
- 只需在拉取命令中新增指定参数
- Spring的
application.yml
配置- 将
testcontainers
的版本对应更新至1.16.0
及其以上,即可正常拉取镜像并启动,因为自从1.16.0
版本起,testcontainer
就对M1芯片进行了特定的适配,对应版本更新说明如下:https://newreleases.io/project/github/testcontainers/testcontainers-java/release/1.16.0
- 将